#pragma once

namespace Khaos
{
    // int to ype
    template<unsigned int n>
    struct IntToType
    {
        static const unsigned int value = n;
    };

    // IsPointer
    template<class T>
    struct IsPointer
    {
    private:
        static T    _testValue();
        static char _makeTest( const void* );
        static int  _makeTest( ... );

    public:
        static const bool value = sizeof(_makeTest(_testValue())) == sizeof(char);
    };

    template<class T>
    const T& getTypeInitVal()
    {
        static T s_val;
        return s_val;
    };
}

